# -*- coding: utf-8 -*-
from werkzeug.utils import secure_filename  #获取安全目录名的方法
from application import app,db
from common.libs.Helper import getCurrentDate
import datetime
import  os,stat,uuid   #检测文件夹存不存在 ，则用os变量
from common.models.Image import Image
class UploadService():
	@staticmethod
	def uploadByFile( file ):
		#获取上传的配置
		config_upload = app.config['UPLOAD']
		resp = { 'code':200,'msg':'操作成功~~','data':{} }
		# 判断图片的扩展名称是不是base_setting里设定好的扩展名
		filename = secure_filename( file.filename )   #secure_filename 获取安全的扩展名
		app.logger.info(filename)
		ext = filename.rsplit(".",1)[1]   #获取扩展
		app.logger.info('uploadServer',ext)
		if ext not in config_upload['ext']:
			resp['code'] = -1
			resp['msg'] = "不允许的扩展类型文件"
			return resp
		root_path = app.root_path + config_upload['prefix_path']
		#不使用getCurrentDate创建目录，为了保证其他写的可以用，这里改掉，服务器上好像对时间不兼容
		# 使用年月日生成一个文件夹
		file_dir = datetime.datetime.now().strftime("%Y%m%d")
		#最终的存储地址
		save_dir = root_path + file_dir
		# os判断路劲是否存在
		if not os.path.exists( save_dir ):
			os.mkdir( save_dir )
			os.chmod( save_dir,stat.S_IRWXU | stat.S_IRGRP |  stat.S_IRWXO )   #chmod改变目录权限  用户获取执行权限

		file_name = str( uuid.uuid4() ).replace("-","") + "." + ext  #将里边的字符串‘-’全部替换成“”
		file.save( "{0}/{1}".format( save_dir,file_name ) )  #上传的文件存储

		model_image = Image()
		model_image.file_key = file_dir + "/" + file_name
		model_image.created_time = getCurrentDate()
		db.session.add( model_image)
		db.session.commit()

		resp['data'] = {
			'file_key': model_image.file_key #日期加文件名
		}
		return resp